using System;
using System.Runtime.Serialization;

namespace TfsSpam.Differ
{
    /// <summary>
    /// The CheckinEventProcessorException defines the type of exceptions
    /// thrown by the <see cref="CheckinEventProcessor"/> class.
    /// </summary>
    [Serializable]
    public class CheckinEventProcessorException : Exception
    {
        #region -- Constructor
        /// <summary>
        /// Initializes a new instance of the CheckinEventProcessorException class.
        /// </summary>
        public CheckinEventProcessorException() : base()
        {
        }

        /// <summary>
        /// Initializes a new instance of the CheckinEventProcessorException class 
        /// with a specified error message.
        /// </summary>
        /// <param name="message">The message that describes the error.</param>
        public CheckinEventProcessorException( string message )
            : base( message )
        {
        }

        /// <summary>
        /// Initializes a new instance of the CheckinEventProcessorException class with a specified error 
        /// message and a reference to the inner exception that is the cause of this exception.
        /// </summary>
        /// <param name="message">The error message that explains the reason for the exception.</param>
        /// <param name="innerException">
        /// The exception that is the cause of the current exception, or a null 
        /// reference (Nothing in Visual Basic) if no inner exception is specified.
        /// </param>
        public CheckinEventProcessorException( string message, Exception innerException )
            : base( message, innerException )
        {
        }

        /// <summary>
        /// Initializes a new instance of the CheckinEventProcessorException class with serialized data.
        /// </summary>
        /// <param name="info">The <see cref="SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
        /// <param name="context">The <see cref="StreamingContext"/> that contains contextual information about the source or destination.</param>
        protected CheckinEventProcessorException( SerializationInfo info, StreamingContext context )
            : base( info, context )
        {
        }
        #endregion
    }
}
